草庐IT

objective-c - GCD 和异步 NSURLConnection

全部标签

c# - 检查 IEnumerable<object> 是否为 IEnumerable<int>

我已经IEnumerable类型变量。IEnumerableitems=newobject[]{1,2,3};检查它是否为IEnumerable的最佳方法是什么??我试过了typeof(IEnumerable).IsAssignableFrom(items.GetType())typeof(IEnumerable).IsInstanceOfType(items)itemsisIEnumerable但是,Re-Sharper会提示所有这些问题。就我而言,IEnumerableitems类型为IEnumerable在大多数情况下。我想在类型为IEnumerable时执行某些操作以及其他类型

c# - 如何在不破坏现有 Object.Equals() 的情况下仅检查两个对象的属性是否相等?

基本上,GethashCode是不同的,即使它们包含相同的属性值...那么为什么默认返回差异哈希码?publicclassUser{publicInt32Id{get;set;}publicStringUsername{get;set;}}Usera=newUser();a.Id=1;a.Username="Hello";Userb=newUser();b.Id=1;b.Username="Hello";Console.WriteLine("HashA:{0}|HashB:{1}",a.GetHashCode(),b.GetHashCode());//HashA:37121646|Ha

c# - 发送异步电子邮件

我正在使用ASP.NETMVC3和MVCMailer,我尝试使用SendAsync发送电子邮件,但实际上它仍然需要更长的时间。所以我尝试像下面的代码一样使用Task.Factory:vartask1=Task.Factory.StartNew(state=>{varmail=newUserMailer();varmsg=mail.Welcome("MyName","myemail@gmail.com");msg.SendAsync();});task1.Wait();问题是,MVCMailer需要HttpContext,但在这个任务中我得到了HttpContextNull。如何发送异步

c# - 没有 "threads"的异步和等待?我可以自定义引擎盖下发生的事情吗?

我有一个关于如何自定义新async的问题/await关键字和TaskC#4.5中的类是。首先了解我的问题的一些背景知识:我正在开发具有以下设计的框架:一个线程有一个“当前待办事项”列表(通常大约有100到200个项目),这些列表存储为自己的数据结构并作为列表保存。它有一个Update()枚举列表并查看某些“事物”是否需要执行并执行的函数。基本上它就像一个大线程调度器。为了简化事情,让我们假设“要做的事情”是返回bool值true的函数。当它们“完成”时(不应称为下一次更新)和false下次更新时调度程序应该再次调用它们。所有“事物”不能并发运行,也必须在一个线程中运行(因为线程静态变量

c# - Visual Studio 2017 : "Object reference not set to an instance of an object" while loading the project

我在VS解决方案中有一个项目可以在VS2015中正确加载,但它似乎在VS2017(RC2)中已损坏。在解决方案资源管理器中,它显示其“加载失败”,当我尝试重新加载它时,我收到一个错误弹出窗口,消息为“对象引用未设置为对象的实例”。我认为这可能是因为VS2017以某种方式更改了.csproj文件以满足他们的需要,但是在将它与VS2015解决方案中的版本进行比较后我发现它们并没有什么不同。有人遇到过这样的事情吗?以及如何修复它?谢谢。 最佳答案 对于VisualStudio2017的我来说,这些建议都没有奏效。有效的方法是关闭所有Vis

没有等待或返回的 C# 异步任务方法

我有一个在两个地方实现的接口(interface)I,例如:interfaceI{TaskDoSomething();}该接口(interface)具有异步任务DoSomething方法API,然后在类A中实现,例如:classA:I{....}classB:I{....}在类A中,DoSomething的实现如下,没问题:publicasyncTaskDoSomething(){if(...){awaitDoIt();}}但是,在类B中,DoSomething()的实现不应执行任何操作。所以,它的实现看起来像这样:publicasyncTaskDoSomething(){//noth

c# - 简单地停止异步方法

我有这种播放声音的方法,当用户点击屏幕时,我希望它在用户再次点击屏幕时停止播放。但问题是“DoSomething()”方法不会停止,它会一直运行直到完成。boolkeepdoing=true;privateasyncvoidScreenTap(objectsender,System.Windows.Input.GestureEventArgse){keepdoing=!keepdoing;if(!playing){DoSomething();}}privateasyncvoidDoSomething(){playing=true;for(inti=0;keepdoing;count++

c# - 如何设计流畅的异步操作?

异步操作似乎无法与我更喜欢编写代码的流畅界面配合使用。异步如何与流畅结合?示例:我有两个方法之前返回了一个MyEntity但在更改为Async时效果不佳。在我异步化它们之后,我必须await任务的结果,但我必须为添加的每个步骤执行此操作:MyEntityXx=await(awaitFirstStepAsync()).SecondStepAsync();必须有更好的方法。 最佳答案 更好的方法是使用类似于LINQ的延迟执行。您可以拥有许多实际上什么都不做的方法,它们只是设置一些选项或存储一些逻辑。最后有一些方法可以实际执行之前存储的所

c# - F# 等效于 C# 'object' 关键字

我正在尝试将现有的c#移植到f#,我是否会在移植此c#行时遇到困难:publicobjectmyInnerOject 最佳答案 在C#中object只是一个引用System.Object的类型名称.在F#中,您可以使用此完整的.NET名称或类型别名obj.现在,关于字段声明——根据上下文,有多种方式来编写它。此外,在F#中初始化所有字段也是一种很好的做法,因此查看代码的更大上下文会很有用。但是,你可以这样写:typeA()=letmutable(myInnerObj:obj)=null这会创建一个私有(private)字段myInn

c# - 对 Object.ToString() 的冗余调用

我有一个函数,除其他外,它接受一个声明为intprivateCount的参数。当我想在此参数上调用ToString()时,ReSharper会将其灰显并将其标记为冗余调用。因此,尽管我很好奇,但我删除了ToString(),代码仍然可以构建!C#编译器如何允许这样做,其中str是一个字符串?str+=privateCount+... 最佳答案 string的+运算符被重载以调用String.Concat传入表达式的左侧和右侧。因此:stringx="123"+45;编译为:String.Concat("123",45);由于Stri